using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using hotelservices;

namespace hotelservices.app_code.ds
{
    public class AgenciaDS
    {
        public agencia getAgenciaByEmail(string Email)
        {
            HotelEntities entities = new HotelEntities();
            IQueryable<agencia> res = (from s in entities.agencia where s.email == Email select s);
            if (res.Count() > 0)
                return res.First();
            else
                return null;
        }

        public List<AgenciaDC> getAllAgencias()
        {
            HotelEntities entities = new HotelEntities();
            List<agencia> res = (from s in entities.agencia select s).ToList();
            List<AgenciaDC> ret = new List<AgenciaDC>();
            AgenciaDC aux;
            for (int i = 0; i < res.Count(); i++)
            {
                aux = new AgenciaDC();
                aux.Idagencia = res.ElementAt(i).idagencia;
                aux.Nombre = res.ElementAt(i).nombre;
                aux.Email = res.ElementAt(i).email;
                aux.Contrasena = res.ElementAt(i).contrasena;
                aux.reservas = res.ElementAt(i).reservas;
                ret.Add(aux);
            }
            return ret;
        }

        public bool save(AgenciaDC agencias)
        {
            HotelEntities entities = new HotelEntities();
            agencia aux = new agencia();
            aux.idagencia = agencias.Idagencia;
            aux.nombre = agencias.Nombre;
            aux.email = agencias.Email;
            aux.contrasena = agencias.Contrasena;
            aux.reservas = agencias.reservas;
            entities.agencia.Add(aux);
            int res = entities.SaveChanges();
            if (res > 0)
                return true;
            else
                return false;
        }

        public bool update(AgenciaDC agencias)
        {
            HotelEntities entities = new HotelEntities();
            IQueryable<agencia> res = (from s in entities.agencia where s.idagencia == agencias.Idagencia select s);
            if (res.Count() > 0)
            {
                agencia aux = res.First();
                aux.idagencia = agencias.Idagencia;
                aux.nombre = agencias.Nombre;
                aux.email = agencias.Email;
                aux.contrasena = agencias.Contrasena;
                aux.reservas = agencias.reservas;
                int result = entities.SaveChanges();
                if (result > 0)
                    return true;
                else
                    return false;
            }
            return false;
        }

        public List<agencia> GetAgenciasW(int startIndex, int maxRows)
        {
            using (HotelEntities entities = new HotelEntities())
            {
                return (from agencia in entities.agencia
                        select agencia)
                            .OrderBy(agencia => agencia.nombre)
                            .Skip(startIndex)
                            .Take(maxRows).ToList();
            }
        }

        public int GetAgenciasCount()
        {
            using (HotelEntities entities = new HotelEntities())
            {
                return entities.agencia.Count();
            }
        }

    }
}